package com.itlong.cloud.app.dao;

import com.itlong.cloud.POJO.VO.app.AppMonthCardBillVO;
import com.itlong.cloud.POJO.VO.app.AppMonthCardFeeRecordVO;
import com.itlong.cloud.POJO.VO.app.AppMonthCardParkingVO;
import com.itlong.cloud.POJO.VO.miniprogram.WeChatOfficialGetMonthCardCarVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *       APP-月卡停车模块访问数据库接口.
 * </desc>
 *
 * @createDate 2018/11/6
 */
@Mapper
@Repository
public interface IAppMonthCardParkingDao {

    /**
     * <desc>
     *      获取月卡车辆列表
     * </desc>
     *
     * @param userId
     * @return
     * @author Juguang.S
     * @createDate 2018/11/06
     */
    List<AppMonthCardParkingVO> getMonthCarList(@Param("userId")String userId);

    /**
     * <desc>
     *      确认该车辆是否是租客所属车辆
     * </desc>
     *
     * @param carId
     * @return
     * @author Juguang.S
     * @createDate 2019/01/05
     */
    Integer getParkIsTenant(@Param("carId") String carId,@Param("userId") String userId);

    /**
     * <desc>
     *      获取月卡车辆列表
     * </desc>
     *
     * @param userId
     * @return
     * @author Juguang.S
     * @createDate 2018/12/31
     */
    String isUserTenant(@Param("userId") String userId);

    /**
     * <desc>
     *      根据租客手机号获取月卡车辆列表
     * </desc>
     *
     * @param phoneNum
     * @return
     * @author Juguang.S
     * @createDate 2018/12/31
     */
    List<AppMonthCardParkingVO> getMonthCarListTenant(@Param("phoneNum")String phoneNum);

    /**
     * <desc>
     *      获取当前用户是否是月卡用户
     * </desc>
     *
     * @param userId
     * @return
     * @author Juguang.S
     * @createDate 2018/11/06
     */
    Integer getUserIsParkVIP(@Param("userId")String userId);

    /**
     * <desc>
     *      根据项目编号和车牌号查询APP账单展示所需的数据
     * </desc>
     *
     * @param carId 车辆ID
     * @return
     * @author Juguang.S
     * @createDate 2018/11/07
     */
    AppMonthCardBillVO getAppMonCarFeeBill(@Param("carId") String carId,@Param("projectId") String projectId);

    /**
     * <desc>
     *      保存
     * </desc>
     *
     * @param params 数据参数
     * @return
     * @author Juguang.S
     * @createDate 2018/11/07
     */
    Integer save(Map<String,Object> params);

    /**
     * <desc>
     *      更新
     * </desc>
     *
     * @param params 数据参数
     * @return
     * @author Juguang.S
     * @createDate 2018/11/07
     */
    Integer update(Map<String,Object> params);

    /**
     * <desc>
     *      获取此时月卡有效期的截止日期
     * </desc>
     *
     * @param carId 车辆ID
     * @return
     * @author Juguang.S
     * @createDate 2018/11/07
     */
    String getMonthCarEndTime(@Param("carId") String carId);

    /**
     * <desc>
     *      获取当前用户月卡缴费记录
     * </desc>
     *
     * @param params 数据参数
     * @return
     * @author Juguang.S
     * @createDate 2018/11/08
     */
    List<AppMonthCardFeeRecordVO> getMonPayListPage(Map<String,Object> params);

    /**
     * <desc>
     *      获取当前用户为租客时的月卡缴费记录
     * </desc>
     *
     * @param params 数据参数
     * @return
     * @author Juguang.S
     * @createDate 2019/01/12
     */
    List<AppMonthCardFeeRecordVO> getMonthCarPayInfoTenant(Map<String,Object> params);

    /**
     * <desc>
     *      获取当前用户月卡缴费记录总数量
     * </desc>
     *
     * @param params 数据参数
     * @return
     * @author Juguang.S
     * @createDate 2018/11/08
     */
    Integer getMonPayListPageCount(Map<String,Object> params);

    /**
     * <desc>
     *      微信公众号获取月卡车辆列表
     * </desc>
     *
     * @return 月卡车辆列表
     * @author wangzhi
     * @createDate 2019/04/01
     */
    List<WeChatOfficialGetMonthCardCarVO> getMonthCardCarList(@Param("plateNumber") String plateNumber);
}
